//package com.elegantmall.aop;
///*
//* @author:kongweifeng
//* @date:2025/3/18
//* 对Controller的拦截，拦截所有Controller的请求，然后进行日志记录，并判断值是否有问题，若有问题,则直接拦截禁止访问
//* 若没有问题，则放行并对Controller运行结果进行记录
//* 相当于在Controller前后各加了一个断点
//* 并非必要，大家可以不写这个类
// */
//
//
//import cn.hutool.jwt.JWT;
//import cn.hutool.jwt.JWTUtil;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import lombok.val;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//import org.springframework.web.servlet.HttpServletBean;
//import org.springframework.web.servlet.mvc.condition.RequestConditionHolder;
//
//import java.io.IOException;
//import java.io.PrintWriter;
//
//@Aspect
//@Component
//public class ControllerAop {
//    @Pointcut("@annotation(com.elegantmall.annotation.NeedAuth)")
//    public void doAuth(){
//
//    }
//
//
//    @Before("doAuth()")
//    public void doBefore(){
//
//
//        HttpServletRequest request=((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
//        String token=request.getHeader("Token");
//        if(token==null){
//            HttpServletResponse response=((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
//            PrintWriter writer = null;
//            try {
//                writer = response.getWriter();
//            } catch (IOException e) {
//                throw new RuntimeException(e);
//            }
//            writer.println("请登录后再尝试");
//        }
//        else if(token !=null){
//            // 验证算法
//            JWTUtil.verify(token, "givenbykong".getBytes());
//        }
//    }
//}
///*
//* 我并未实现AOP，AOP的功能主要可以用于授权，
//* 也就是比如判断用户是否有这个权限去执行该操作
//* 但我没有该设计需求，所以没有实现
//* 大家如果有相关需求，可以搜索AOP的资料，或者自己用其他设计来实现
//* */